/*
 * @Description:
 * @Author: Junhuang
 * @Date: 2022-04-14 20:06:32
 * @LastEditTime: 2022-05-29 23:28:44
 * @LastEditors: Junhuang
 * @Reference:
 */
'use strict';
module.exports = app => {
  const { INTEGER, DATE } = app.Sequelize;
  // 配置（重要：一定要配置详细，一定要！！！）
  const Rank = app.model.define('rank', {
    id: { type: INTEGER(20), primaryKey: true, autoIncrement: true, comment: '主键id' },
    user_id: { type: INTEGER(20), allowNull: false, comment: 'user_id' },
    on_time_rate: { type: INTEGER(20), allowNull: false, comment: '达成率' },
    score: { type: INTEGER(20), allowNull: false, comment: '平均分' },
    speed: { type: INTEGER(20), allowNull: true, comment: '速度' },
    created_time: {
      type: DATE,
      // 获取器，对获取的数据库中的字段进行处理，此处将数据库中的时间字段转换为timestamp
      get() {
        const val = this.getDataValue('created_time');
        return (new Date(val)).getTime();
      },
    },
    updated_time: {
      type: DATE,
      // 获取器，对获取的数据库中的字段进行处理，此处将数据库中的时间字段转换为timestamp
      get() {
        const val = this.getDataValue('updated_time');
        return (new Date(val)).getTime();
      },
    },
  }, {
    timestamps: true, // 是否自动写入时间戳
    tableName: 'rank', // 自定义数据表名称
  });

  // 关联关系
  Rank.associate = function() {
    // 关联用户
    Rank.belongsTo(app.model.User, {
      foreignKey: 'user_id',
    });
  };

  return Rank;
};

